home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Tools 2
/
Amiga Tools 2.iso
/
tex
/
macros
/
source
/
contrib
/
fp
/
defpattern.sty
next >
Wrap
Text File
|
1995-03-09
|
1KB
|
32 lines
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{defpattern}[1994/10/12]
\message{%
`\string\defpattern-macro (adapted from \string\howto\space (Alan Jeffrey in TeX and TUG NEWS 2(2)))'%
}
%define a macro \defpattern for defining ML-like pattern matching macros
%adapted from the \howto-macro from tugboat
\def\xcs#1#2{\expandafter#1\csname#2\endcsname}
\newcount\actioncount
\def\defpattern#1[#2]#3{%
\xcs\ifx{\expandafter\gobble\string#1}\relax
\def#1{\erroraction#1}\fi
\advance\actioncount by 1\relax
\expandafter\defaction\expandafter{#1}{#3}{#2}%
\def\temp##1##2##3##4##5##6##7##8##9{\def\temp{[#2]}}%
\temp\empty\empty\empty\empty\empty\empty\empty\empty\empty
\edef#1{\noexpand\doaction\xcs\noexpand
{action-\the\actioncount}\temp}}
\def\defaction#1#2#3{%
\xcs\def{action-\the\actioncount}##1[#3]{\applyto{#1}{#2}}}
\def\gobble#1{}
\def\applyto#1#2#3{#3{#1}{#2}}
\def\doaction#1[#2][#3]{#1[#3]\success[#2]\failure[#3]}
\def\success#1#2[#3]\failure[#4]{#2}
\def\failure#1#2{#1}
\def\erroraction#1[#2]{%
\errmessage{I don't know how to \string#1[#2]}}